﻿# -*- coding: utf-8 -*-
import unittest
#from uiautomator import Device
#导入HTMLTestRunner用来执行用例，生成报告
from Public import HTMLTestRunner
import sys
import time
import os
import sys
reload(sys)
sys.setdefaultencoding('UTF-8')
'''
ID=[]
ID.append('')
def connect():
    ID[0] = '4d00b50cebd6400d'
    if ID[0]=='':
        ID[0] = raw_input('输入手机ID： ')
    d = Device('%s'%(ID[0]))
    print('正在连接手机')
    print(d.info)
    return d
'''

if __name__=='__main__':
    #这里导入想要执行的用例库
    #CaseName=raw_input('请输入用例名(不带py后缀)：')
    #调试用：
    CaseName = []
    file1 = open('D:\\helloword\\test2\\automation\\TestCase\\t\\a2.txt')
    name = file1.readlines()
    for n in xrange(len(name)):
        name[n] = name[n].replace('\n','')
        #print name[n]
        #print isinstance(name[n].decode('GB2312',"ignore"), unicode)
        CaseName.append(name[n])

    
    #CaseName=['Test_Case1','Test_Case你好','Test_Case3']
    CASE =[]
    for k in xrange(len(CaseName)):
        #取当前脚本所在目录：例如"d:\automation"
        path = os.path.split(os.path.realpath(__file__))[0]
        #判断环境中有没有加入Testcase目录，用以导入CASE
        if not "%s\\TestCase\\t"%path in sys.path:
            #如果没找到的话就在环境中添加Testcase目录
            sys.path.append("%s\\TestCase\\t"%path)
            #检查有没有加载用例模块
        if not CaseName[k] in sys.modules:
            #将用例模块导入，就可以操作CASE了，例如：print CASE.Case.N
            print('正在导入用例')
            print CaseName[k]
            CASE.append( __import__(CaseName[k]))
            print('Success')
    #print CASE
    

    #print CASE[0].Case.__dict__
    testunit = unittest.TestSuite()
    
    print('获取用例数量')
    t_lis = []
    tt = []
    for c in CASE:
        for k in c.Case.__dict__:
            if k.find('Test') != -1:
                t_lis.append(k)
        #print('用例数量为：%d'%len(t_lis))
        for a in xrange(len(t_lis)):
            testunit.addTest(c.Case("Test%d"%(a+1)))
            tt.append(c.Case("Test%d"%(a+1)))
        t_lis = []
    print len(tt)
    t = time.strftime("%Y-%m-%d-%H-%M-%S")
    day = time.strftime("%Y-%m-%d")+'\\'
    #获取当前脚本的目录
    path = os.path.split(os.path.realpath(__file__))[0]
    #把path变成存放报告的目录
    path = path+'\\'+'Result\\'
    #判断是否存在文件夹
    if os.path.exists(path+day)==False:
        print('新建报告文件夹')
        os.mkdir(r'%s%s'%(path,day))

    print('报告件夹为：'+path+day)
    path=path+day
    #以t命名报告文件
    filename='%sAndroid_%s.html'%(path,t)
    fp=open(filename,'wb')
    runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'自动化测试报告',
                                         description=u'手机ID：%s.自动化测试报告\n'%100)
    print('正在执行...')
    time.sleep(1)
    runner.run(testunit)
    time.sleep(1)
    print('执行完毕')
    
'''
    #Remove=raw_input('输入不跑的case(用空格分开,全跑直接回车)：')
    Remove=''
    if Remove=='':
        print('用例全跑，不做处理')
        Remove=[None]
    else:
        print('处理')
        Remove=Remove.split(' ')
        for k in range(len(Remove)):
            Remove[k]=int(Remove[k])
        print '不跑用例：',Remove


    #获取用例数量
    #通过用例里手动标记的数量来获取，请确保数量的准确
    print('获取用例数量')
    N = CASE.Case.N
    print('用例数量为：%d'%N)

    print('开始执行用例')
    testunit = unittest.TestSuite()
    #按顺序添加用例
    for a in range(N):
        if Remove.count(a+1)==1:
            pass
        else:
            testunit.addTest(CASE.Case("Test%d"%(a+1)))
    '''
    #输出报告的目录
    #获取当前时间，检查是否存在当前日期的目录，没有则新建一个当前年月日命名的文件夹

    #获取当前时间，t用作文件的命名，day用作文件夹的命名

    
